#ifndef BULLETLIB_FILE_SYSTEM
#define BULLETLIB_FILE_SYSTEM

#include <vector>
#include <QObject>
#include <QList>
#include <QString>

#include <QtXML/QDomDocument>
#include <QtXML/QDomElement>
#include <QSharedPointer>
#include <QMap>

#include <osg/Vec3>
QT_BEGIN_NAMESPACE

class FileSystem
{

public:


    virtual ~FileSystem();
    static FileSystem* instance();


    void loadFile(const QString& filePath);
    void loadFileByDialog();

    void saveFile(const QString& filePath);
    void saveFileByDialog();

    QDomElement getDocDomElement();
    void setDocDomElement(const QDomDocument& domElement);


    QString getDomDocStr();

    void saveBinaryFile(const QString& filePath, float* doubleArray, int arrayCOunt);
    void saveBinaryFile(const QString& filePath, QList<float>& floatArray);

    void saveVec3VectorToOSGFile(const QString& filePath, std::vector<osg::Vec3>& vec3Vector);
    void saveVec3VectorToMatlabFile(const QString& filePath, std::vector<osg::Vec3>& vec3Vector);
    void saveVec3VectorToMatlabFile2(const QString& filePath, int size);
    void readBinaryFile(const QString& filePath, std::vector<float>& floatVec);
    void readBinaryFile(const QString& filePath, std::vector<osg::Vec3>& vec3Vector);

    bool removeFolderContent(const QString &folderDir);



protected:

private:
    FileSystem();
    static FileSystem* _instance;
    QDomDocument* m_domDocument;
};

QT_END_NAMESPACE

#endif // BULLETLIB_FILE_SYSTEM
